package com.xrh.core.bean;

import javax.validation.constraints.NotBlank;

import com.xrh.core.exceptions.BusinessException;

import cn.hutool.core.util.StrUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
public class QueryDBRequest {
	
	@ApiModelProperty("数据库ip")
	@NotBlank(message = "数据库ip不能为空")
	private String ip;
	
	@ApiModelProperty("数据库端口")
	@NotBlank(message = "数据库端口不能为空")
	private String port;
	
	@ApiModelProperty("数据库名称")
	@NotBlank(message = "数据库名称不能为空")
	private String dataBaseName;
	
	@ApiModelProperty("数据库账号")
	@NotBlank(message = "数据库账号不能为空")
	private String dbUserName;
	
	@ApiModelProperty("数据库密码")
	@NotBlank(message = "数据库密码不能为空")
	private String password;
	
	@ApiModelProperty("数据库类型标志(0:mysql,1:oracle)")
	private int dbTypeFlag = 0;
	
	@ApiModelProperty("SID或服务名(0 : SID , 1 : 服务名)")
	private int oracleSIDOrServerNameFlag = -1;
	
	@ApiModelProperty("oracle数据库SID或服务名文本")
	private String oracleSIDOrServerName;
	
	@ApiModelProperty("查询sql")
	@NotBlank(message = "查询sql不能为空")
	private String sql;
	
	/**
	 * @function 校验参数
	 * @author 肖荣辉
	 * @date 2023年1月4日
	*/
	public void checkParams() {
		
		if(dbTypeFlag == 0) 
			return;
		
		//oracle数据库
		if(dbTypeFlag == 1) {
			
			if(oracleSIDOrServerNameFlag == -1)
				throw new BusinessException("请传入SID或服务名标志->oracleSIDOrServerNameFlag(0 : SID , 1 : 服务名)");
			
			if(StrUtil.isBlank(oracleSIDOrServerName))
				throw new BusinessException("请传入oracle数据库SID或服务名称");
			
		}

	}
	
}

